package io.terminus.paas.profiler.service

import io.terminus.paas.profiler.model.ServiceModel

/**
 * Created by gengrong on 16/3/16.
 * 提供服务相关操作
 * 这名字也是没谁了,谁告诉我一个更好的名字
 *
 * @see ServiceModel
 * @see Provider
 * @see Consumer
 */
interface ServiceService {

    /**
     * 获取所有服务
     * Test Method
     * @return 所有服务列表
     */
    fun listAll(registryAddress: String): List<ServiceModel>

    /**
     * 基于查询字段获取服务
     * @param query 查询关键字
     * @return 匹配的服务列表
     */
    fun findByQuery(registryAddress: String, query: String): List<ServiceModel>

    /**
     * 查询某应用下所有服务
     * @param application 服务名称,精确查询
     * @return 匹配的服务列表
     */
    fun findByApplication(registryAddress: String, application: String): List<ServiceModel>


    /**
     * 查询某应用下所有服务
     * @param application 机器IP,精确查询
     * @return 匹配的服务列表
     */
    fun findByMachine(registryAddress: String, machine: String): List<ServiceModel>

    /**
     * 基于服务ID查询服务详情信息
     * @param serviceId 服务ID
     * @return 服务详情
     */
    fun getDetailByServiceId(registryAddress: String, serviceId: String): ServiceModel

    open fun findByTag(registryAddress: String, tag: String): List<ServiceModel>

    fun updateTag(registryAddress: String, serviceId: String, tags: String?)
}